/*
通用滑动窗口滤波算法。

从数值开始发生变化到获取值为真实值的时间为：输入更新时间 * VALUE_NUM。
中间时间，获取值在原值和接收之间线性变化.
可以解决速度控制中出现的速度跳变的问题，不用更改PID参数

*/
#defiine 			VALUE_TYPE 	u32
#define 			VALUE_NUM	100
//用于储存滤波数据的数组
VALUE_TYPE val[VALUE_NUM];
//添加原始数据。
u8 ValueIn(VALUE_TYPE value)
{
	static u16 i = 0;
	val[i] = value;
	if(++i >= VALUE_NUM)
	{
		i = 0;
	}
}
//获取平滑滤波后的数据。
VALUE_TYPE ValueGet(void)
{
	u8 i;
	u32 ValuePuls = 0;
	for(i = 0;i < VALUE_NUM;i++)
	{
		ValuePuls += val[i];
	}
	return ValuePuls / VALUE_NUM;
}